package com.todo1.unit_testing.services.stock;

import java.util.List;

import com.todo1.unit_testing.dto.ItemDto;
import com.todo1.unit_testing.exception.NoStockException;

public class StockServicesImpl implements StockServices {
	
	public static final int SIMULATED_AVAILABLE_QUANTITY = 5;

	private boolean productAvailable(ItemDto item) {
		System.out.println("Consultando en BD si hay inventario suficiente para " +
				"el producto con id: " + item.getProduct().getId());
		
		boolean stockAvailable = item.getQuantity() < SIMULATED_AVAILABLE_QUANTITY ? true : false;
		
		if (stockAvailable) {
			System.out.println("Si hay inventario para el producto con id: " 
					+ item.getProduct().getId());
		}
		
		return stockAvailable;
	}

	public void updateStock(List<ItemDto> items) throws NoStockException {
		
		for (ItemDto item : items) {
			if (!productAvailable(item)) {
				throw new NoStockException("Inventario no disponible para : "
						+ item.getProduct().getId());
			}
			System.out.println("Actualizando inventario para : "
					+ item.getProduct().getId());
		}
	}
}
